package trastienda.service;

import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import trastienda.dao.RolDAO;
import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Rol;

@Service
public class RolServiceImpl implements RolService {

	@Autowired
	private RolDAO rolDAO;

	public void setRolDAO(RolDAO rolDAO) {
		this.rolDAO = rolDAO;
	}

	public Collection<Rol> listarTodos() throws DAOExcepcion {
		return rolDAO.listarTodos();
	}

	public Collection<Rol> buscarPorNombre(String nombre) throws DAOExcepcion {
		return rolDAO.buscarPorNombre(nombre);
	}

	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public void insertar(String rolNombre, String descripcion) throws DAOExcepcion {
		
		Rol vo = new Rol();
		vo.setRolNombre(rolNombre);
		vo.setDescripcion(descripcion);
		
		rolDAO.insertar(vo);
	}

	public Rol obtener(String rolNombre) throws DAOExcepcion {
		return rolDAO.obtener(rolNombre);
	}

	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public void eliminar(String rolNombre) throws DAOExcepcion {
		rolDAO.eliminar(rolNombre);
	}

	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public void actualizar(String rolNombre, String descripcion) throws DAOExcepcion {
		
		Rol vo = new Rol();
		vo.setRolNombre(rolNombre);
		vo.setDescripcion(descripcion);
		
		rolDAO.actualizar(vo);
	}

}
